package com.vhall.component.service.vote;


import com.vhall.component.entity.vote.vo.VotesListRspVO;
import com.vhall.component.entity.vote.vo.room.*;

/**
 * @author longzhen.gong
 * @date 2021/7/6 19:18
 */

public interface VoteRoomService {

    /**
     * 删除投票
     *
     * @param voteId
     * @param accountId
     * @return
     */
    Boolean delete(Long voteId, Integer accountId);

    /**
     * 解除绑定
     *
     * @param voteId
     * @param roomId
     * @return
     */
    Boolean unBindRoom(Long voteId, String roomId);

    /**
     * 从资源库中复制投票到房间
     *
     * @param reqVO
     * @param accountId
     * @return
     */
    CopyRspVO copy(CopyReqVO reqVO, Integer accountId);

    /**
     * 删除缓存信息
     *
     * @param roomId
     * @param voteId
     */
    void delRunningVoteIdCache(String roomId, Long voteId);

    /**
     * 答投票
     *
     * @param reqVO
     * @return
     */
    Boolean answer(AnswerReqVO reqVO);

    /**
     * 回答投票信息落地
     *
     * @param param
     */
    void answerToDb(String param);

    /**
     * 发布投票
     *
     * @param reqVO
     * @return
     */
    Boolean publish(PublishReqVO reqVO);

    /**
     * 结束投票
     *
     * @param reqVO
     * @return
     */
    Boolean voteFinish(FinishReqVO reqVO);

    /**
     * 投票结束后，投票公布结果
     *
     * @param reqVO
     * @return
     */
    Boolean votePush(PushReqVO reqVO);

    /**
     * 是否提交过投票
     *
     * @param reqVO
     * @return
     */
    CheckSurveyRspVO checkSurvey(CheckSurveyReqVO reqVO);

    /**
     * 投票实时统计结果推送(不发公告)
     *
     * @param reqVO
     * @return
     */
    Boolean pushStatis(PushStatisReqVO reqVO);

    /**
     * 取消投票发布
     *
     * @param reqVO
     * @return
     */
    Boolean cancelPublish(PublishReqVO reqVO);

    VotesListRspVO getLastVote(String roomId);
}
